home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / LANG / C / LIB / DESKLIB / CORE / DeskLib / Docs / Updates < prev   
Text File  |  1995-09-03  |  48KB  |  1,278 lines

  1. This file documents changes made between released versions of DeskLib.
  2.  
  3.  
  4.  
  5. DeskLib 2.30 (02 Sep 1995)
  6. ==========================
  7.  
  8.  
  9.  
  10. Overview of major changes since version 2.16
  11. --------------------------------------------
  12.  
  13. New libraries:    Debug, Dialog2, Filing, Font2, Menu2, Print, Pane2.
  14.  
  15. StrongHelp help manual '!DeskLib.DeskLib'. This needs version 2 of
  16. StrongHelp.
  17.  
  18. Dynamic-linking version of DeskLib.
  19.  
  20. Everything is now in a 'DeskLib' directory. The distribution is in the
  21. form of a set of zip files which contain different parts of the DeskLib
  22. directory tree.
  23.  
  24. New 'DeskLib.!DLSources' directory containing DeskLib source code.
  25.  
  26. New 'DeskLib.!DLUser' directory for user's personnel DeskLib-style libraries.
  27.  
  28. Many new scripts and command-line commands, which are used to make the
  29. process of rebuilding DeskLib more automated.
  30.  
  31. Normal and trimmed versions of the DeskLib header files - with a program
  32. to generate the trimmed headers.
  33.  
  34. All headers now compatible with C++
  35.  
  36.  
  37.  
  38.  
  39. New sublibraries
  40. ----------------
  41.  
  42. Debug    A few standard function prototypes which reduce to nothing
  43.     unless 'DeskLib_DEBUG' is defined, allowing easy building of
  44.     normal and debug builds from the same source code.
  45.     See 'DeskLib.Docs.ModulENote.Debug'.
  46.  
  47. Dialog2    An alternative to the 'Dialog' library.
  48.  
  49. Filing    Easy access to files information, directory scans and
  50.     filename handling.
  51.  
  52. Font2    This provides fonts which are automatically updated on mode
  53.     changes.
  54.  
  55. Menu2    Slightly higher-level support for menus. Uses the existing Menu_
  56.     functions.
  57.  
  58. Print    Handles the wimp protocol for printing.
  59.  
  60. Pane2    Alternative to Pane. Takes care of Pane windows.
  61.  
  62. SmError    an implementation of the Error_ functions for use with
  63.     command-line programs. Error messages are sent to stderr rather
  64.     than Wimp_ReportError.
  65.  
  66.  
  67.  
  68.  
  69. Changes to existing sub-libraries
  70. ---------------------------------
  71.  
  72. Core    Removed OSCLI (now in kernelSWIs).
  73.     Now includes <stddef.h> instead of #defining NULL 0.
  74.     Added various preprocessor statements for dynamic linking.
  75.  
  76. Error    New macros:
  77.         error_FIXED,error_STATIC
  78.             These define compact os_error blocks.
  79.             
  80.         error_global    A global os_error.
  81.         error_PLACE    Useful in diagnostic messages.
  82.     
  83.     Removed #include "kernel.h"
  84.     
  85. Event    Added typedef 'event_claimorreleasefn'.
  86.     
  87.     Moved definition of 'event_taskname' into a separate file in the
  88.     Event sublibrary directory. This is so that using Error_
  89.     functions (which use event_taskname) in a non-wimp program
  90.     doesn't pull in the whole Event library.
  91.  
  92. File    Changed OS_File to SWI_OS_File.
  93.     Added File_ReadExtent.
  94.     Added a few filetype #defines (MSX, RLE, COLORIX, FITS, HAWKV9,
  95.     REPLAY).
  96.  
  97. Filter    Fixed bugs in Filter_RegisterPostFilter and
  98.     Filter_DeRegisterPostFilter.
  99.     Fixed prototype of Filter_DeRegisterPostFilter in
  100.     'DeskLib:Filter.h'.
  101.  
  102. Font    Added Font_Paint3 - veneer for the RISC OS 3 Font_Paint3 SWI.
  103.  
  104. GFX    Added macros GFX_Mode and GFX_SetOrigin.
  105.  
  106. Icon    Small bug-fix in Icon.c.IncDec - caret is moved to end of
  107.     writable icon after each increment/decrement.
  108.     Icon_GetText    now sets terminater in returned string rather
  109.             than the icon's buffer.
  110.  
  111. KernelSWIs
  112.     Added:    OS_SWINumberToString
  113.         OS_SWINumberFromString
  114.         OS_GSTrans
  115.         osbyte_WRITEVDUDRIVERBANK
  116.         osbyte_WRITEDISPLAYHARDWAREBANK
  117.  
  118. Mem    Many changes and bug-fixes.
  119.  
  120. Menu    Small bug-fix for indirected menu-titles from Neil Tarrant.
  121.  
  122. Pane    Fixed incorrect #defines of pane_HORIZ/VERT in Pane.h
  123.  
  124. Save    Now #includes <stdlib.h> for size_t
  125.  
  126. Sprite    Fixed a bug in Sprite_MemorySize - it now works properly with
  127.     'double pixel'    modes.
  128.     Added Sprite_Select
  129.  
  130. Template
  131.     Now declares some globals used by Window_ModeChange.
  132.  
  133. Wimp    Additions to message_action enum
  134.         message_FILER...
  135.         message_PRINTER...
  136.         message_PS...
  137.     
  138.     Added    Wimp_StartTask3
  139.         Wimp_GetWindowInfoNoIcons (for RO 3.10 or later)
  140.     
  141.     Corrected the comments in window_flags about which window flags
  142.     are 'old-style'.
  143.  
  144. WimpSWIs
  145.     Added SDLS-compatible Wimp_Poll(Idle) veneers -
  146.     automatically used with SDLS clients.
  147.         
  148.     Wimp_SpriteOp changed to use a simple array of 10 ints instead
  149.     of a _kernel_swi_regs. This is to remove the dependancy on
  150.     "kernel.h", allowing use with gcc.
  151.  
  152.     Removed #include "kernel.h"
  153.  
  154. Window    Added    Window_GainCaret
  155.         Window_CreateOrig
  156.         Window_DeleteOrig
  157.         Window_ForceWholeRedraw
  158.         Window_MoveWindow
  159.     Changed Window_GetInfo3 to return an (os_error *).
  160.  
  161. Window / Template
  162.     Fixed a very hacky bit of code in the Window/Template
  163.     sublibraries - the 'TempDefs.h' was duplicated in the Windows
  164.     sublibrary.
  165.  
  166.  
  167.  
  168.  
  169. DeskLib path variables
  170. ----------------------
  171.  
  172. C source code should continue to use '#include "DeskLib:Foo.h"' to load
  173. the DeskLib header files.
  174.  
  175. There is now a '!DLUser' directory for user's own DeskLib libraries.
  176.  
  177. 'DeskLib:' now resolves to 'DeskLib_User:,DeskLib_Core:', where
  178. 'DeskLib_Core:' is the !DeskLib directory and 'DeskLib_User:' is the
  179. !DLUser directory. This means that you can write your own DeskLib
  180. libraries but keep everything (even your header files) separate from the
  181. main DeskLib directories. This should simplify things when new versions
  182. of DeskLib are released.
  183.  
  184.  
  185.  
  186.  
  187.  
  188. New DeskLib documentation
  189. -------------------------
  190.  
  191. Probably most useful is the StrongHelp manual for DeskLib. This is the
  192. file '!DeskLib.DeskLib'. The help pages are generated automatically from
  193. the DeskLib header files, so they document *every* DeskLib function, macro
  194. and variable.
  195.  
  196. New files in 'DeskLib.Docs':
  197.     
  198. QuickRefs.MenuData    breakdown of menu structures.
  199.     
  200. ModuleNote.
  201.  
  202.     Debug
  203.     Dialog2
  204.  
  205. DynamLink.
  206.  
  207.     SDLS_Apps    Information on how to write and build programs
  208.             which use the dynamic-linking version of
  209.             DeskLib.
  210.             This is all you need to write DLL clients.
  211.     
  212.     DLLChanges    Detailed information on the changes made to
  213.             DeskLib to allow generation of normal/static
  214.             linking DeskLib.
  215.     
  216.     RndDLLInfo    Some more info about the DLL changes.
  217.  
  218.  
  219.  
  220.  
  221. Example applications
  222. --------------------
  223.  
  224. TestApp    This has been changed so that DLL and debugging versions can be
  225.     made as well as the standard statically-linked one, from the
  226.     same source code.
  227.  
  228.  
  229. New example programs:
  230.  
  231. Widget5        Andrew Sellor's excellent image processing program.
  232. Pane2test    Tests the new Pane2_ functions.
  233. Dialog2EG    Tests the new Dialog2_ functions.
  234.  
  235. New example source
  236.  
  237. Print    Some source which uses the Print_ functions. This is from my
  238.     Shell library, and might give an idea of how to use Print.
  239.  
  240. There is now an EasyC version of !TestApp. Unfortunately I haven't had
  241. time to make EasyC versions of the other example programs. If you use
  242. EasyC, then any help in this area would be very welcome.
  243.  
  244.  
  245.  
  246. Source and makefiles
  247. --------------------
  248.  
  249. Many of the source files have been altered to #include "DeskLib:Foo.h"
  250. rather than "Foo.h". Also, all sources now #include their library's main
  251. header file, to ensure consistency between declarations and definitions.
  252. The makefiles all use cc -fh to check this sort of thing.
  253.  
  254. The DeskLib library makefiles now use 'cc -I,C:' instead of 'cc
  255. -I,DeskLib:,C:', and they all have stricter compiler checking, such as
  256. checking for unused variables, variables being used before they are set
  257. etc.
  258.  
  259. Most .c files have been altered so they compile with no warnings (eg by
  260. judicious use of UNUSED()), but there are some that still make cc give a
  261. warning; there is a comment in the appropriate part of the source file
  262. acknowledging this.
  263.  
  264. The exceptions to this are the Pane2 and Mem modules - I haven't had
  265. time to understand and remove the offending code or put acknowledge
  266. comments in.
  267.  
  268.  
  269.  
  270.  
  271. General changes to header files
  272. -------------------------------
  273.  
  274. The !DeskLib directory now contains two versions of the DeskLib header
  275. files. The ones in '!DeskLib.h_doc' are the normal fully-commented ones
  276. which should be read to find information about DeskLib functions, while
  277. '!DeskLib.h' contains automatically-generated 'trimmed' versions, with
  278. all C comments removed and some removal of excess white space.
  279.  
  280. The reason for doing this is that I got a bit fed-up with having AMU
  281. recompile lots of source code after I'd made a minor change to a comment
  282. in a header. This was particularly bad when working on 'DeskLib:Core.h'
  283. which is included (indirectly) by every DeskLib .c file.
  284.  
  285. Using the trimmed headers also improves compilation times slightly.
  286.  
  287. The '!DLSources.Bin.CTrim' file is used to generate the trimmed
  288. headers. The Obey file '!DeskLib.TrimHead' runs this on each of the
  289. headers in the !DeskLib directory.
  290.  
  291. All headers are now (hopefully) C++ compatible (ie 'extern "C" {...}' is
  292. used if __cplusplus is defined).
  293.  
  294. All DeskLib headers include other DeskLib headers with '#include
  295. "xxx.h"' - some used to use '#include "DeskLib:xxx.h"' which doesn't
  296. work with cc version 4 unless -I,C: is used.
  297.  
  298. All comments in the headers are now adjacent to their declarations so
  299. that generation of the StrongHelp pages works better. Also added a few
  300. short comments to many typedef structs in Wimp.h so that there are links
  301. to other relevant struct in the StrongHelp pages.
  302.  
  303. None of the DeskLib headers use "kernel.h" now, so that DeskLib can
  304. (hopefully) be used with gcc, as long as some stubs (eg gststubs) to the
  305. Shared C Library are used (as apposed to UnixLib, which doesn't have the
  306. _kernel_* functions AFAIK).
  307.  
  308.  
  309.  
  310.  
  311. New organisation of source files etc
  312. ------------------------------------
  313.  
  314. There have been some changes to the directory structure of the DeskLib
  315. source code directory. This is to accomodate the additional makefiles/.o
  316. files needed to create a dynamically-linkable version of DeskLib. 
  317.  
  318. All sources are now in a '!DLSources' application directory, which also
  319. contains various scripts and template makefiles which are needed. The
  320. '!DLSources.!Boot' file sets the system variable <DeskLib_Sources$Dir>
  321. to be the !DLSources directory.
  322.  
  323. Makefiles in the individual DeskLib sublibrary directories are now
  324. generated automatically from template makefiles in
  325. '!DLSources.TemplateMF'. 
  326.  
  327. The Obey files in '!DLSources.Scripts' do various things such as create
  328. makefiles, run makefiles etc. See '!DLSources.!Help' for more
  329. information.
  330.  
  331. In addition, there are some DeskLib-specific commands in
  332. '!DLSources.Scripts.Commands' which can be used with a 
  333. 'DeskLib_Commands:' prefix. They are: 'DeskLib_Commands:EachDLL' and
  334. 'DeskLib_Commands:EachStatic'. These are similar to 'Every', except they
  335. run the given command on every DLL/~DLL DeskLib sublibrary, by looking
  336. for the presence/absence of the 'IsDLL' file.
  337.  
  338. '!DLSources.Bin' is added to your Run$Path by 'DLSources.!Boot' using
  339. 'DeskLib_Run:'. It contains various utilities which are used by some of
  340. the scripts in '!DLSources.Scripts'. These utilities provide usage
  341. information if run with no parameters. They are:
  342.  
  343.     Makatic    Makes makefiles for a directory by adding a list of .o
  344.         files to the start of a template makefile.
  345.  
  346.     CTrim    Strips comments and excess white space from C source
  347.         code. The output file is only overwritten if it differs
  348.         from an existing trimmed file, thus preserving the
  349.         timestamp when possible.
  350.  
  351.     Every    Performs a command on every dir and/or file in a
  352.         directory. Can also act recursively.
  353.  
  354. There is a zero-length 'IsDLL' file in each sublibrary directory which
  355. can be made into a DLL, which is checked by the EachDLL/Static programs.
  356.  
  357.  
  358.  
  359.  
  360. Dynamic Linking
  361. ---------------
  362.  
  363. DeskLib now comes as a normal library ('!DeskLib.o.DeskLib'), and also
  364. as a set of Dynamically Linkable Libraries (DLLs, in
  365. '!DeskLib.!DLLs.Freeware_1.DeskLib.') and a library of Stubs files
  366. ('!DeskLib:o.DLLClient') which use the Straylight Dynamic Linking System
  367. (SDLS) to allow applications to share DeskLib code.
  368.  
  369. (There is actually a third version of DeskLib which is used when making
  370. DeskLib DLLs, '!DeskLib.o.DLLDLL').
  371.  
  372. See 'Docs.DynamLink.SDLS_Apps' for complete information on how to make
  373. an existing application use the DLL version of DeskLib.
  374.  
  375. See 'Docs.DynamLink.DLLchanges' to find out about the various new macros
  376. which are set in DeskLib headers to allow compilation for normal, client
  377. and DLL programs.
  378.  
  379. See 'Docs.DynamLink.RndDLLInfo' for extra snippetts of info about the
  380. DLL DeskLib.
  381.  
  382. Various #ifdef stuff has been added to various headers to give different
  383. compiles for DLL clients or DLL libraries. These changes are needed to
  384. make global variables work transparently under the SDLS.
  385.  
  386. A few changes have been made to various libraries to support global
  387. variables properly under the SDLS. These changes are basically to add a
  388. veneer function which returns the address of each global variable
  389. supported by the sub-library. These functions are only compiled when a
  390. DLL-version of a library is being made.
  391.  
  392. Please note that using DeskLib for normal (static) linking is completely
  393. unaffected by the presence of the DLL stuff, because of the use of
  394. various macros and #ifdef/#ifndef in the DeskLib headers and source
  395. files.
  396.  
  397.  
  398.  
  399.  
  400. 2.16 (Apr 1995) --------------------------------------------------------------
  401.  
  402. Put in the contact addresses for the new moderators, Julian Smith and
  403. Craig Beech.
  404.  
  405.  
  406. 2.15 (Apr 1995) --------------------------------------------------------------
  407.  
  408. AMENDED
  409.   WimpSWIs
  410.     Wimp_ProcessKey fixed - in 2.14 it went into an infinte loop
  411.  
  412.  
  413. 2.14 (January 1995) ----------------------------------------------------------
  414.  
  415. AMENDED
  416.   File
  417.     File_Size now returns zero if the file does not exist
  418.  
  419.   Kbd
  420.     Kbd_Keydown() now uses return value from r1 instead of r2; this doesn't
  421.     affect its normal use ('negative INKEY'), but allows it to be used to scan
  422.     for a range of keys with 0 < R1 < 128.
  423.  
  424.   Mem
  425.     Fixed a bug where the heap could be corrupted when merging blocks as
  426.     stuff was freed.
  427.  
  428.   Menu
  429.     NewMenu can now cope (under RO3.10 onwards) with indirected titles, so
  430.     you may now pass in strings longer than 12 chars to this method.
  431.     RemoveItem has been upgraded to handle menus including indirected titles
  432.     (thanks for that marvellous bodge, Acorn)
  433.  
  434.   Wimp.h
  435.     Added some RISC OS 3 flag bits to the window and menu flags
  436.     Added iconization protocol message structures
  437.  
  438.  
  439. ADDED
  440.   Icon
  441.     Icon_WhichRadioInESG - much the same as WhichRadio, but the icons to
  442.     scan are specified with an ESG value rather than a range of icon handles
  443.     Icon_ButtonIsHeld - returns TRUE if a mouse button is down.
  444.  
  445.   Menu
  446.     Added functions to provide a menu of available fonts.
  447.     Menu_MakeIndirected - Makes a menu item indirected
  448.     Menu_ReviseWidth - Re-scans the menu and sets its width to accomodate
  449.     the text of the title and all items (use after SetText or MakeIndirected)
  450.     Menu_FullDispose - Disposes of a menu, including indirected data (but does
  451.     not dispose recursively of attached submenus)
  452.     Menu_PopUp and PopUpAuto - for showing a popup menu to the right of
  453.     a given icon.
  454.  
  455.   Resource
  456.     resource_sprites now point at your global sprite resources. This defaults
  457.     to the WIMP sprite pool, but can be set to local resources by using the
  458.     new Resource_LoadSprites call.
  459.  
  460.   Templates
  461.     Template_LinkSpriteArea - Links a given template to a given sprite area
  462.  
  463.   Window
  464.     Window_ForceRedraw - a veneer for force redrawing part of a window
  465.     Window_SetExtent   - sets the window extent, and re-opens it if necessary
  466.     to make the window screen appearance update
  467.     Window_GetCoords   - a simple means to fill in the coords_convertblock
  468.     for a given window
  469.  
  470.  
  471. 2.12 (October 1994 - unreleased) ---------------------------------------------
  472.  
  473. AMENDED
  474.   Headers
  475.     Several headers have had tiny changes applied to be compatible with
  476.     c++ compilation - mainly replacement of reserved words such as new,
  477.     delete, template, etc.
  478.     Headers changed are: Filter, PDriver, WimpSWIs
  479.  
  480.   Str
  481.     Str.s.strcatcr rewritten. Now more efficient, and works properly.
  482.  
  483.   Sprite
  484.     Bug in WimpPlot fixed (was using 16 bytes at a random address, rather
  485.     than on the stack, for workspace!)
  486.  
  487.   Time
  488.     MonoTime made marginally more efficient (STM/LDM -> MOV)
  489.  
  490.   WAssert.h
  491.     Fixed the comments slightly. Now defines the assert macro if _DEBUG
  492.     is *defined*, as it should, rather than when it is not defined!
  493.     assert() Macro corrected.
  494.  
  495.   Wimp
  496.     Renamed all the object files to useful names
  497.     Veneers that used to stack r14 only over the SWI call now save it in
  498.     the ip register; this replaces 2 LDM instructions with MOVs - marginally
  499.     more efficient.
  500.  
  501.  
  502. ADDED
  503.   EventMsg
  504.     Fixed the EventMsg dispatcher so that message handlers may deregister
  505.     themselves during handling of a message without causing the message
  506.     dispatcher list scanner to jump immediately into hyperspace.
  507.  
  508.   File
  509.     Added the File_GetType code which was accidentally missed out last time
  510.  
  511.   Icon
  512.     Added IncDec.c which provides two new functions, Icon_InitIncDecHandler 
  513.     and Icon_ReleaseIncDecHandler. These attach automatic Event_ handlers
  514.     which change the integer value of a writable icon whenever left/right
  515.     or up/down bump icons are clicked. See Icon.h and Examples.!IncDec
  516.  
  517.     Added AlterValidation function - this allows you to write a new string
  518.     over the existing validation string; useful for changing border types
  519.     and suchlike
  520.  
  521.   Pointer
  522.     Added 4 routines to restrict the mouse pointer to a rectangle, a window,
  523.     and an icon, and to 'free' such a captured pointer again.
  524.     Examples.!TestApp now restricts the pointer while the hourglass is going
  525.     The hourglass now runs for 2 seconds rather than 1 in order to make it
  526.     easier to detect the restriction by waggling the mouse around.
  527.  
  528.   Sprite
  529.     Added Sprite_LoadFiles function, which uses varargs to allow you to
  530.     load multiple sprite files in one go
  531.  
  532.   Window
  533.     Window_ConstrainMouse - to constrain the mouse pointer within a window
  534.     (a convenient macro for a Pointer_ call)
  535.  
  536.  
  537. REMOVED
  538.   Examples.Pane was old code, incompatible with version 1.02 of the Pane
  539.   sublibrary. This has been removed.
  540.  
  541.  
  542.  
  543. 2.11 (August 1994) -----------------------------------------------------------
  544.  
  545. AMENDED
  546.   File
  547.     ** Changed all FILETYPE_ definitions to filetype_ for consistency
  548.     File_Exists now reads the object type of the file to determine if it
  549.     exists, rather than just attempting to open it.
  550.     File_Size now uses OS_File 17 rather than 13
  551.  
  552.   Icon
  553.     Icon_FileIcon filename formatting string amended
  554.  
  555.   Save
  556.     Sublibrary significantly improved and bugfixed- see Save.h and Save.c
  557.  
  558.   Sprite
  559.     SpriteOps 43 (ReadMask) and 47 (FlipY) calculated the SpriteOp reason
  560.     code incorrectly (SUB instead of ADD?!)
  561.     SpriteOps 52 (PlotScaled) and 62 (ReadSaveAreaSize) corrected
  562.  
  563.   Str
  564.     Renamed 'LeafName' to 'Str_LeafName'. For backwards compatibility,
  565.     there is '#define LeafName Str_LeafName'.
  566.     Str_LeafName now also recognises ':' as a leafname separator, so it now
  567.     works on paths (e.g. "MyPath:Templates" now returns the leaf properly)
  568.  
  569.   Wimp
  570.     Now contains a definition for message_dataloadack (identical to dataload)
  571.     icon_indsprite now uses a (void *) as its sprite area pointer rather than
  572.     an (int *). It should use sprite_area, but (void *) was chosen to avoid
  573.     a dependency upon the sprite header (Wimp takes long enough to parse as
  574.     it is)
  575.  
  576.  
  577. ADDED
  578.   Clear
  579.     This new sublibrary provides base functions for handling Clear files
  580.  
  581.   File
  582.     Added prototype for existing File_Date function
  583.     New File_printf function
  584.  
  585.   Handler
  586.     New function Handler_Key to return unwanted keypresses to the Wimp
  587.  
  588.   KernelSWIs
  589.     Added OS_ReadModeVariable veneer
  590.  
  591.  
  592.  
  593. 2.10 (June 1994) -------------------------------------------------------------
  594. MOVED
  595.   I've moved !TestApp into the new Examples directory
  596.  
  597.  
  598. AMENDED
  599.   My contact addresses mysteriously changed, coincidentally at the same time
  600.   as I moved to England and started working at Computer Concepts.
  601.   See the end of 'AboutDL' for my new addresses.
  602.  
  603.   Doc.Blanks.Makefile
  604.     Updated this for the new make system (I missed it the last time around)
  605.  
  606.   Core
  607.     BOOL is now an unsigned rather than signed int, to allow 1-bit BOOL
  608.     bitfields.
  609.  
  610.   Coord
  611.     Changed to new help-comment format comments
  612.  
  613.   Dialog
  614.     A couple of bugfixes to the dialogue code
  615.  
  616.   Event
  617.     Fixed bug in NULL event handling (NULL events were not included in
  618.     event_ANY claims, but were in included in event_ANY releases, so were
  619.     often disabled when they should not have been).
  620.     event_ANY now definitely does NOT include NULL events, 'cos they're special
  621.  
  622.     **** IMPORTANT ****
  623.     Claims of events for any window (with event_ANY) are now added to the
  624.     HEAD of the event list rather than the TAIL. This means that you can add
  625.     a temporary event OVERRIDE to a window - the old system meant that you
  626.     could only intercept events that were not otherwise already processed
  627.     by the window.
  628.  
  629.   File
  630.     Fixed File_Delete (to save registers v1, v2 over the SWI call)
  631.  
  632.   Icon
  633.     Icon_GetText has been slightly modified so it won't blow up if you have
  634.     an indirected icon which does not contain text or a sprite. It now also
  635.     terminates the string at the first control character discovered, rather
  636.     than expecting the string to be zero terminated
  637.  
  638.     Icon_SetText, Icon_printf, Icon_SetTextRJ, Icon_SetInteger, Icon_SetDouble
  639.     now all ensure that when setting the text in an icon containing the caret,
  640.     the caret is not left in the wrong place
  641.  
  642.   Handler
  643.     Minor change (all functions now include handler.h)
  644.  
  645.   Misc
  646.     All strong handling functions have moved to the new 'Str' sublibrary
  647.  
  648.   Mem
  649.     Mem_MidExtend now returns TRUE if you ask it to extend by 0 bytes, so
  650.     you shouldn't have to special-case this case any more.
  651.  
  652.     Several serious bugs ironed out of Mem_Compact
  653.  
  654.   Menu
  655.     Small changes to NewMenu.c to calculate MenuWidths better, and not
  656.     indirect menu items if they are exactly 12 characters long.
  657.  
  658.   StringCR.h
  659.     All definitions from this file are now in the new 'Str.h' header.
  660.     StringCR.h remains for backwards compatability.
  661.  
  662.   Template
  663.     Fixed rampant bug in template ClearAll and Delete (trying to free memory
  664.     that wasn't malloc'd!)
  665.     ClearAll also now releases any fonts that were in use by the discarded
  666.     templates.
  667.     Template loading now truly appends templates to the current list rather
  668.     than destroying the old list.
  669.  
  670.   Window
  671.     Window.h now includes a prototype for Window_BringToFront
  672.     Added open_CENTEREDUNDERPOINTER open mode for Window_Show
  673.     Window_Delete now also releases all EventMsg claims
  674.     Window_Create now returns 0 if it fails
  675.  
  676. ADDED
  677.   Added Erik de Kort's small OpenDirH program to !DeskLib, so now double-
  678.   clicking !DeskLib opens the headers without obscuring the icon bar.
  679.   (RISC OS 3 only. If you haven't got RO3, upgrade)
  680.  
  681.   Added Docs.HelpCommnt and Blanks.HelpCommnt.*
  682.   This describes how to generate machine-readable comments in your sources
  683.   that can be compiled with Tim Browse's up-coming help compiler. The help
  684.   will then become an on-line hyperlinked database (StrongHelp or WordWorks
  685.   HyperView) rather than scrappy bits of text spread over hundreds of
  686.   header files.
  687.  
  688.   ColourTrans
  689.     Added veneer for ColourNumberForMode SWI
  690.  
  691.   Coord
  692.     Added RectUnion
  693.  
  694.   Core.h
  695.     Added UNUSED_ARG, MIN, MAX, and OSCLI macros
  696.  
  697.   Dialog
  698.     Addition of Hide and ShowAt functions
  699.  
  700.   Drag sublibrary
  701.     This simplifies dragging by providing a central handler system, into which
  702.     you can plug handlers specific to each drag when the drag is started.
  703.     These handlers are automatically discarded when the drag completes.
  704.     This addition includes the Event handlers DragNULL & DragFinish, and
  705.     the stuff in the Drag sublibrary (Drag_Initialise, Drag_SetHandlers)
  706.     See Drag.h for details.
  707.  
  708.   File
  709.     Added File_Date and File_SetType
  710.  
  711.   GFX
  712.     Added GFX_GCOL macro
  713.  
  714.   Handler_HatchRedraw.
  715.     This redraws a hatch pattern across a window. Useful when developing a
  716.     program but haven't written a redraw handler, so you can see that
  717.     something is happening.
  718.  
  719.   Hourglass
  720.     The hourglass swi veneer macros (in hourglass.h) have now been replaced
  721.     by proper SWI veneer functions.
  722.  
  723.   Icon
  724.     Icon.SetCol, two small functions to set the foreground and background
  725.     colours of a (non-outline-font) icon.
  726.  
  727.     Icon_SetTextRJ; similar to SetText, but right-justifies the text in the
  728.     icon string buffer (i.e. if the string is too long, it is truncated at
  729.     the beginning rather than at the end)
  730.  
  731.     Addition of the following code files by Tim Browse:
  732.       BarIconUse
  733.       FileIcon
  734.       GetBgCol
  735.       GetFgCol
  736.       GetTextPtr
  737.       ScreenPos
  738.       SelectGroup
  739.       ShadeGroup
  740.  
  741.   Kbd
  742.     Added GetModifiers function, which reads the up/down state of modifier
  743.     keys (Alt, Ctrl, Shift)
  744.  
  745.   KernelSWIs
  746.     Added this sublibrary, which provides veneers for OS_Byte and OS_Word
  747.  
  748.   Mem
  749.     Added Mem.CheckHeap, a function for debugging which checks the
  750.     integrity of the heap.
  751.  
  752.   Menu
  753.     Menu.GetText: A function that returns a pointer to a menu item text buffer
  754.  
  755.     Menu.GetFlags: A function to read a menu item's flags
  756.  
  757.     Menu.Warn: A function that registers a message_MENUWARN handler with
  758.     EventMsg, and sets a menu item's flags to make it produce such a message.
  759.  
  760.     Menu.RemItem: A function to remove an item from an existing menu structure
  761.  
  762.   Module
  763.     A new sublibrary supporting the OS_Module SWI.
  764.     Currently provides OS_Module Claim and Free functions
  765.  
  766.   PDriver
  767.     PDriver.h now has a more constants defined, tidier comments, & RO3 support
  768.  
  769.   Save
  770.     A save-as window handler sublibrary
  771.  
  772.   Serial
  773.     Veneers and handlers for accessing the serial port - see Serial.h
  774.  
  775.   Sprite
  776.     A whole heap of new veneers, plus Sprite_LoadFile
  777.  
  778.   Str
  779.     New String sublibrary. This includes all the 'StringCR' stuff, plus
  780.     some new ANSI-like string handlers, plue LeafName (returns the leaf
  781.     name from a full RISC OS pathname string) and other functions such
  782.     as decoding hexadecimal strings, etc. See Str.h for details.
  783.  
  784.   Template
  785.     Added Template_UseSprites function; Call this before using templates
  786.     to make them use sprites from a user sprite area instead of the
  787.     WIMP sprite pool
  788.  
  789.   Time
  790.     Added SWI veneers for time conversions ConvertDateAndTime and
  791.     ConvertStandardDateAndTime.
  792.  
  793.   WAssert
  794.     A new sublibrary providing a WIMP (Wimp_ReportError) based assertion
  795.     system (Used while developing a program to check if certain conditions
  796.     that should be met in your code actually ARE being met in your code).
  797.     See WAssert.h for details of its use.
  798.  
  799.   Wimp
  800.     Added mouse button value constants (button_SELECT etc) to Wimp.h
  801.  
  802.  
  803.  
  804. 2.05 (inadvertently released ?) ----------------------------------------------
  805.  
  806. ADDED
  807.   Kbd
  808.     Kbd_GET, an OS_ReadC veneer, similar to BASIC's GET command - returns the
  809.     ASCII code of the next keypress in the keyboard buffer (or waits for
  810.     the user to press a key if the buffer is empty)
  811.  
  812. AMENDED
  813.   DragASprite
  814.     DragASprite_DragIcon now works properly under RISC OS 2 as well as 3.
  815.     It turned out the parent bounding box maximum was being set to &FFFFFFFF
  816.     (-1) instead of &7fffffff (the maximum possible positive integer).
  817.     Under RO3 this didn't matter, but RO2 then put the drag box offscreen
  818.     (i.e. it worked fine except the dragbox was 'invisble'!
  819.  
  820.   PDriver.h
  821.     The prototype for EnumerateJobs was missing its argument!
  822.  
  823.   Window
  824.     Window.c.ParentName fixed (was copying only 8 characters of the name
  825.     instead of 12 (wimp_MAXNAME)).
  826.  
  827.  
  828. 2.04 (July 1993) -------------------------------------------------------------
  829.  
  830. Updated the !DeskLib !Run file - now uses Filer_CloseDir on the header dir.
  831. before trying to open it, so that it is now never lost off-screen.
  832.  
  833. Added Wimp_ReportErrorR, which returns the flags to you indicating which
  834. button (OK/Cancel) on the Wimp_ReportError dialogue was clicked by the user.
  835. (source in WimpSWIs.s.Wimp40R). See WimpSWIs.h
  836.  
  837. Added Wimp_Poll3 and Wimp_PollIdle3.
  838.  
  839.  
  840. 2.03 (July 1993) -------------------------------------------------------------
  841.  
  842. Important - Please note that Event_ and Wimp.h now support more RISC OS 3
  843. functionality. Specifically, Wimp_Initialise has a new parameter (message
  844. list) on the end - to re-link with this version of the library, you will need
  845. to upgrade any Wimp_Initialise calls in your code (add a NULL onto the end of
  846. the list of parameters to Wimp_Initialise). You can of course take this
  847. opportunity to upgrade your code to use the new features the RISC OS 3
  848. makes available. Note that you'll also need to use LibFile to re-make the
  849. WimpLib if you use it separately.
  850.  
  851. Along similar lines, you can now call Event_Initialise3() in place of
  852. Event_Initialise to do a proper RISC OS 3 Wimp_Initialise, passing in a
  853. list of accepted messages, etc. Event_Initialise provides the same (RISC OS 2)
  854. functionality as before.
  855.  
  856.  
  857. MISCELLANEOUS modifications
  858.   Modified the Libraries.!MakeDLib obey file. Each sublibrary is now compiled
  859.   by invoking an alias 'DLibMake', which makes the file shorter and more
  860.   readable, and also allows you to more easily modify the way in which
  861.   sublibraries are compiled.
  862.  
  863.   Modified the Clean obey files - they now won't abort if a file is missing.
  864.  
  865.   Modified the Makefiles to make everything tidier.
  866.   Now, in the obey file Libraries.!MakeDLib, you can set 3 amu variables:
  867.     x_cflags - c compiler extra flags
  868.     x_aflags - objasm extra flags
  869.     do       - What to do to create the sublibrary
  870.  
  871.   This allows you to do some important things:
  872.     x_cflags=-Ff
  873.       This is the new default, which reduces the library code size by about 5%.
  874.       However, when debugging, you may like to recompile the library with the
  875.       'f' removed, so that you can find the names of the functions being
  876.       called as you debug.
  877.  
  878.     do="Create $@ 1"
  879.       This will minimise disc space used by the library (by creating 1-byte
  880.       'sublibraries' instead of compiling them properly - the file is needed
  881.       so amu knows the sublibrary is up to date)
  882.  
  883.     do="LibFile -c -o $@ @.o.*"
  884.       This will create each sublibrary - you can then use the sublibrary files
  885.       to link with instead of the main DeskLib library (eg WimpLib is quite
  886.       handy on its own, and is only 18kB rather than DeskLib's >100kB, a very
  887.       useful thing if you're developing of floppies!)
  888.  
  889.  
  890.   Updated the TestApp- now does the following extra things:
  891.     * Uses outline fonts, and gets them right if you change screen modes
  892.     * Changes the window title if you click the menu item 'Change title'
  893.       when you brought the menu up from a window (else that item is shaded)
  894.  
  895.  
  896. BUGS which have been fixed:
  897.   Font
  898.     Fixed a major set of bugs due to a small and harmless-looking typo in the
  899.     Font sublibrary - most of the font calls would return a non-zero value
  900.     if no error occurred, and a zero value if an error occurred (i.e. the
  901.     opposite of what they should have been doing: MOVVS r0, #0 instead of
  902.     MOVVC r0, #0)
  903.     This affects most font calls, but you'll only notice a difference if you
  904.     check the returned error - the SWIs worked fine, but returned incorrect
  905.     error-return-values - all other return values were unaffected.
  906.  
  907.   ColourTrans, DragASprite
  908.     Similar problems were also removed from the assembler veneers for the
  909.     ColourTrans, DragASprite, and PopUp sublibraries - namely that the return
  910.     values were not consistent with the definitions given in the headers.
  911.     I'll keep a closer eye on this in future!
  912.  
  913.   Icon
  914.     Icon_BarIcon, Icon_GetText, Icon_Set(Integer/Double/Text), Icon_printf
  915.     previously did not correctly terminate strings correctly if they were too
  916.     long to fit in the icon.
  917.     Icon_BarIcon now uses sprite_MAXNAME rather than wimp_MAXNAME for copying
  918.     the sprite name (though these constants are both 12, so there is no
  919.     effective difference)
  920.  
  921.   Menu
  922.     No longer trashes your machine with indirected menu items (Menu_New)
  923.  
  924.   PopUps
  925.     'bugs' removed from the PopUp.h header file's example code segments
  926.     SWI veneers fixed up - they didn't quite correspond to the prototypes
  927.     given in the headers.
  928.  
  929.   Template_Clone
  930.     Now terminates copied strings properly.
  931.  
  932.  
  933. MODIFICATIONS
  934.   Error
  935.     Upgraded OtherSrc.c.Error and Error.h to new code submitted by P.Colmer.
  936.     Now Error_Report and Error_ReportFatal (and "Internal" versions of these)
  937.     take variable arguments - they can still be used exactly as before, but
  938.     you can now include any 'printf' style arguments to save having to
  939.     pre-assemble a string to pass in.
  940.  
  941.   Event
  942.     Upgraded Event_Initialise to call the new function Event_Initialise3
  943.     with a required WIMP version of 200 (RISC OS 2 WIMP), to add support
  944.     for RISC OS 3, and the new non-zero-pollword events.
  945.  
  946.   Resource
  947.     This has now been moved from Misc to its own (Resource) sublibrary.
  948.     Also added replacement call for Resource_Initialise,
  949.     Resource_InitialisePath, which allows you to use DeskLib functions
  950.     to load Templates, messages, etc. from a path ("AppName:Templates")
  951.     rather than a directory ("<AppName$Dir>.Templates") - useful for adding
  952.     support for internationalisation.
  953.  
  954.   Template
  955.     Added support into Template_Clone for a new 'maxtitlesize' value of
  956.     template_TITLEMIN (-1) which will allocate as much room for the title
  957.     as declared in the template definition.
  958.  
  959.     Added support for outline fonts into Template loading.
  960.     (See the end of Template.h for details of the new calls)
  961.  
  962.   Template, Handler, Window
  963.     Added code to fix any windows/templates you are using which contain icons
  964.     using outline fonts whenever a mode change necessitates it (On some mode
  965.     changes outline fonts will otherwise become the wrong size as the font
  966.     manager doesn't re-cache them).
  967.  
  968.     This functionality required addition of:
  969.     Font.c.LoseAll         Lose all fonts in a Template_Load style font
  970.                            usage array
  971.     Handler.c.ModeChange   Replacement for old ModeChange handler - does the
  972.                            same as before, but if you are using outline fonts
  973.                            (you have called Template_UseOutlineFonts()) it
  974.                            fixes all your fonts if necessary. Note that this
  975.                            only works on templates loaded with Template_ calls
  976.                            and windows opened with Window_ calls.
  977.     Template.c.UseOutFont  Function to call BEFORE Template_LoadFile to set up
  978.                            a font usage array and exit-handler to lose any fonts
  979.                            you were using.
  980.     Window.c.ModeChange    Function to call to fix outline fonts in all windows
  981.                            and templates. Called by Handler_ModeChange()
  982.  
  983.     Appropriate changes have been made to the relevant header files.
  984.  
  985.   Wimp SWI veneers
  986.     WimpSWIs.s.Wimp01 (Wimp_Initialise) has now been modified to support
  987.     the new RISC OS 3 parameter (the message list). This call is still
  988.     RISC OS 2 compatible, but those of you calling Wimp_Initialise directly
  989.     will need to add a NULL onto the end of your initialise call, e.g.
  990.       Wimp_Initialise(&version, "MyTask", &taskhandle);
  991.     will become:
  992.       Wimp_Initialise(&version, "MyTask", &taskhandle, NULL);
  993.  
  994.   Window
  995.     As well as the additions mentioned in the bit above,
  996.     changes have also been made to the internal window information structure
  997.     as used by the Window.c files. (The window template name is now
  998.     WIMP_MAXNAME+1 characters long (13) rather than 9 characters long)
  999.  
  1000.  
  1001.  
  1002. ADDITIONS
  1003.   Event
  1004.     Added Event_Initialise3() to Event.c.Event. This more or less replaces
  1005.     Event_Initialise with a new call that will initialise the RISC OS 3 WIMP
  1006.     and allow you to pass in the list of desired messages. You should not use
  1007.     Event_Initialise with WIMP version numbers greater than 200 - use
  1008.     Initialise3 instead. [If you desire RISC OS 2 compatability, you MUST
  1009.     call Event_Initialise]
  1010.     This also allows the support for non-zero pollword events now available
  1011.     under RISC OS 3. Thanks to P.Colmer.
  1012.  
  1013.   File
  1014.     Added File sublibrary, which gives calls for opening, closing, reading and
  1015.     writing (bytes, words, words with endian-conversion, chunks),
  1016.     getting/setting the file position, and misc operations (reading file size,
  1017.     deleting a file, checking if a file exists). These are all veneers for
  1018.     OS_File/GBPB/BGet SWIs, and may be preferable to stdio functions in some
  1019.     circumstances, as they are faster than stdio calls, and also are easier
  1020.     to use in conjunction with other systems that work with RISC OS file
  1021.     handles (rather than C's (FILE *))
  1022.  
  1023.     Added some test code for File_ calls to TestApp. This test code can be
  1024.     found in "!TestApp.Test c" - you can add it back into the test app if you
  1025.     feel keen to try it out! It also might be of use as an example of use of
  1026.     the file calls, though they're pretty simple!
  1027.  
  1028.   GFX
  1029.     Added GFX_VDU (and alias VDU), an OS_WriteC veneer
  1030.  
  1031.   Mem
  1032.     Added Mem_MoveAnchor, which allows you to move the anchor for a memory
  1033.     chunk into another variable. Very convenient in some circumstances
  1034.     (i.e. I had an anchor in an array, and wanted to allocate a new chunk,
  1035.      and some time later replace the old chunk with it in the array - this is
  1036.      now possible by simply moving the anchors for the two blocks into new
  1037.      storage locations as appropriate)
  1038.  
  1039.   PopUps
  1040.     Added Docs.ModuleNote.PopUps which gives a bit more help and example code
  1041.     on using PopUp windows from DeskLib C code.
  1042.  
  1043.   Sprite
  1044.     Added 3 new Sprite functions - a veneer for SpriteOp 62 (read save area
  1045.     size) and functions to return the size (in bytes) of a sprite, given its
  1046.     vital parameters, and the size of a sprite needed to fill a window's icon.
  1047.     Thanks to Tom Kirby-Green for this submission.
  1048.  
  1049.   Wimp.h
  1050.     Wimp.h has been upgraded: icon_flags now include a third struct in
  1051.     the union which allows you to directly access the font handle with
  1052.     icon.font.handle instead of having to mask it out of icon.value
  1053.  
  1054.     Wimp.h now has extra support for RISC OS 3, relating mainly to wimp
  1055.     pollwords and non-zero pollword events. Some new event mask bit
  1056.     definitions have been added.
  1057.  
  1058.   Window
  1059.     Added Window.c.SetTitle, which allows you to set the text of a window title
  1060.     and update the correct bit of the screen, even when using odd sized
  1061.     toolsprites, etc. (And better than win_settitle because it doesn't crash if
  1062.     the icon is non-indirected, it bothers to terminate the string if it had
  1063.     to truncate it to make it fit, and it doesn't try to force redraw part of
  1064.     the screen if the window isn't actually OPEN!)
  1065.  
  1066.     Also added Window_ModeChange, as described above (Modifications to
  1067.     Template)
  1068.  
  1069.  
  1070. 2.01 (May 1993) --------------------------------------------------------------
  1071. Apologies to all DeskLib users out there for the long (1 year) delay between
  1072. releases, and for all the bugs and missing bits in the library. This delay
  1073. was caused by my thesis and other things taking too much of my time. I hope
  1074. that I will be able to continue DeskLib updates at a more reasonable pace
  1075. in the future... I have jumped from version 1.04 to version 2.00 to reflect
  1076. the reasonably large update, to stress the newness of this version, and
  1077. to make you feel as if something must have been done between this and the
  1078. last release! ;-)
  1079.  
  1080. Note that although DeskLib is now supporting RISC OS 3 functions, it is still
  1081. RISC OS 2 compatible. Also, some things (such as Wimp_Initialise under RISC
  1082. OS 3) have not yet been implemented, mainly due to a total lack of any
  1083. documentation on the subject. This will hopefully change for the better in
  1084. the not too distant future...)
  1085.  
  1086. Apologies to anyone who needs to adjust their code because of changes to the
  1087. library headers. These changes were deemed necessary for one or more of the
  1088. following reasons in each case:
  1089.   * To make it work!
  1090.   * To remove unnecessary incompatabilities with compilers other than Desktop C
  1091.   * (as a side effect) To improve consistency/readability
  1092.  
  1093. You can, of course, stick with the old definitions in the headers if you
  1094. prefer them. Most people I know have their own random perturbations of the
  1095. original header files anyway!
  1096.  
  1097.  
  1098.   Additions
  1099.     Added sublibraries:
  1100.       ColTrans       Assembler interfaces to 4 ColourTrans SWIs
  1101.  
  1102.       DragASpr       3 Routines for using DragASprite
  1103.                      I especially direct your attention to
  1104.                      DragASprite_DragIcon() which is excellent!
  1105.                      (c.f. macro "Icon_StartSolidDrag" defined in icon.h)
  1106.                      
  1107.       Filter         Assembler interfaces to RISC OS 3 FilterManager SWIs
  1108.  
  1109.       Font           Assembler interfaces to 23 Font SWIs
  1110.  
  1111.       Kbd            Assembler function to check if a key (e.g  SHIFT, CTRL)
  1112.                      is currently depressed. (No function yet to cheer it
  1113.                      up if it is, though ;-)
  1114.  
  1115.       Menu           Simple menu creation and manipulation functions along
  1116.                      similar lines to those in RISC OS lib. (A proper menu
  1117.                      template system is planned in conjunction with Glazier
  1118.                      for the future, but I needed to fill this gap NOW!)
  1119.  
  1120.       Mem            'flex'-like dynamic memory manager for multitasking
  1121.                      applications. However, 'better' than flex, as it
  1122.                      compacts its heap much more efficiently than the
  1123.                      equivalent operation from flex (you call the Mem_Compact
  1124.                      function just before Wimp_Poll). It also guarantees
  1125.                      that blocks will not move around to a much higher degree
  1126.                      than flex does, giving you more freedom.
  1127.  
  1128.       Sound          Routine to sound a system beep (VDU 7!)
  1129.  
  1130.     Added functions to:
  1131.       GFX            Added GFX_Write0() and GFX_WriteN()
  1132.  
  1133.       Icon           Added Icon_SetSelect(), Icon_SetShade(), and
  1134.                      Icon_DisposeIndData()
  1135.  
  1136.       Misc           Added Dispatch(), a generic function dispatcher, and
  1137.                      new stringcr functions (strcmpcr, strcatcr, strcpycr)
  1138.  
  1139.       Sprite         Added 6 new SWI veneers
  1140.  
  1141.     Added more definitions to:
  1142.       KeyCodes.h
  1143.  
  1144.   Subtractions
  1145.     The REDRAW (3-d icon border redraw) code has been discontinued because:
  1146.       a) RISC OS 3.10 includes this feature for you, and
  1147.       b) DeskLib actively supports RISC OS 3.10 onwards and no longer has
  1148.          any sympathy for people without it! (though all non-RISC-OS-3
  1149.          specific portions of it still work fine with RO2, this cannot be
  1150.          guaranteed for the future)
  1151.      For this reason, Icon_Select3d, Icon_Deselect3d, and Handler_Redraw3d
  1152.      have also been removed.
  1153.      If you have code which uses any of the above, then either copy them
  1154.      forward from your old DeskLib or convert your program to use RISC OS
  1155.      3.10 borders!
  1156.  
  1157.  
  1158.   BugFixes/Modifications
  1159.     Generally:
  1160.       Touched up the docs. PLEASE NOTE my change of email address!
  1161.  
  1162.       Rewrote all the makefiles. Now much smaller, tidier, and easier to both
  1163.       understand and maintain, as well as more informative during Makes.
  1164.       Redirected LibFile through a 'via' file (!Objects).
  1165.       (It's wonderful what you can find out by reading the manual ;-)
  1166.  
  1167.       Moved "Template.c.strlencr" to "Misc.c.strlencr" (see strlencr.h, below)
  1168.  
  1169.       Slightly improved some of the Docs and quickrefs.
  1170.  
  1171.     Coord:
  1172.       Fixed some stunningly obvious and totally wrong prototypes and
  1173.       #defines in Coord.h, particularly the Coord_YTo... macros.
  1174.  
  1175.     GFX:
  1176.       Most GFX commands have been converted to more efficient assembler
  1177.       versions. The header reflects slight changes (e.g. GFX calls now no
  1178.       longer return os_errors).
  1179.       Fixed a harmless bug in GFX_CLG.
  1180.       Made some GFX macros in GFX.h a bit nicer to read
  1181.       Fixed GFX_Circle and GFX_CircleFill (used to use x+r instead of r!)
  1182.  
  1183.     Handler.ClickOK.c:
  1184.       Now doesn't do anything if icon clicked with MENU.
  1185.  
  1186.     Icon:
  1187.       BarIcon.c fixed to take icon size from the sprite correctly
  1188.       Macro Icon_StartSolidDrag added as an alias for DragASprite_DragIcon
  1189.       SetDouble modified to correctly fill in the right number of decimal
  1190.       places.
  1191.       SetCaret will now refuse to place the caret into a shaded icon.
  1192.  
  1193.     LinkList.h:
  1194.       InitItem macros added - now use Init() to init an anchor and InitItem()
  1195.       to init an item, which will make it easier to replace the workings of
  1196.       the list manager seamlessly.
  1197.       Also modified these macros so that they will function corrrectly in the
  1198.       following code:
  1199.         if (whatever)
  1200.           LinkList_InitItem(blah);
  1201.       Redefined LinkList_{Next|Previous}Item() to make them nicer to use -
  1202.       instead of using LinkList_NextItem(&thing.header), you can now use
  1203.       LinkList_NextItem(&thing); (note that both syntaxes are fine now)
  1204.       The Makefile for ListLib now also includes ListLength.c
  1205.  
  1206.     Misc Resource.c:
  1207.       Now adds terminator to string after strncat to ensure that the string
  1208.       is terminated if you supply too long a name.
  1209.  
  1210.       **** Important
  1211.       strlencr has been moved into the Misc sublibrary.
  1212.       strlencr() has been modified to make it functionally equivalent to
  1213.       the ANSI function strlen() - that is, it now returns a value 1 LESS
  1214.       than it did under 1.04 (i.e. it doesn't include the terminator any more)
  1215.       All routines within DeskLib which use this function have been modified
  1216.       accordingly.
  1217.  
  1218.     Sprite:
  1219.       Sprite.h tidied up, and parameter types slightly modified. 'sprite' and
  1220.       'sprite_area' pointer typedefs fixed (previously used old names for the
  1221.       definitions, so were totally incorrect)
  1222.  
  1223.     strlencr.h
  1224.       This has been renamed to 'stringcr.h', and now includes more than one
  1225.       cr-terminated string handling function. (Correspondingly, a slight
  1226.       modification of Template.h.TemplDefs to #include this new header)
  1227.  
  1228.     Wimp.h:
  1229.       window_ICONBAR changed from -1 to -2
  1230.       message_destinee changed to a 'typedef int' instead of a union
  1231.  
  1232.       window_block structure used to use shorts for minwidth and minheight.
  1233.       This has been changed to minsize.x and minsize.y (both for consistency
  1234.       and compatability with the Risc Developments compiler)
  1235.  
  1236.       window_flags structure modified to use the normal DeskLib form for
  1237.       flag-words (flag.value plus flag.data.*)
  1238.  
  1239.       iconvalid_BORDERTYPE changed from 'B' to 'R' (RISC OS 3, 3.10 onwards)
  1240.  
  1241.       Added definitions for message_WINDOWINFO (used for iconisation)
  1242.       and message_MENUSDELETED (warning when a menu is closed)
  1243.  
  1244.       Added windowcol_XXXX defines to make accessing a window's colours
  1245.       easier (i.e. window->colour[windowcol_WORKBACK] = colour_RED)
  1246.  
  1247.       Added colour_TRANSPARENT (= 255)
  1248.  
  1249.       Added message_menuwarn structure definition
  1250.  
  1251.     WimpSWIS:
  1252.       Several function prototypes changed. Some were prototyped as accepting
  1253.       a union which contained either a data set or a 'value' int. Unfortunately
  1254.       the compiler baulks at this, so these have been changed to 'int's. This
  1255.       now means that you need to pass in 'whatever.value' to these functions.
  1256.  
  1257.       Added Wimp_CommandWindow prototype, which somehow got missed out
  1258.       last time!
  1259.       Wimp_DeleteWindow fixed (now actually deletes the window! Wow!) 
  1260.  
  1261.     Window:
  1262.       GetInfo.c: '&block' changed to '&block[0]'
  1263.       Show.c:    Showing a window with open_NEARLAST now modified to open
  1264.                  the very first such window centered. Also, only windows
  1265.                  opened with NEARLAST will now affect the position of
  1266.                  succeeding NEARLAST windows.
  1267.  
  1268.     Template.Clone.c
  1269.       Modified to use the new form of strlencr()
  1270.  
  1271.  
  1272. 1.04 31/05/92 ----------------------------------------------------------------
  1273.   BugFixes/Modifications:
  1274.     A minus changed to a plus in Coord_Convert routine (should now work!)
  1275.     Extra fields added to the menu_flagword struct
  1276.     Incorrect definitions of message_Data(Load/Save/SaveAck) fixed
  1277.       -replaced incorrect "wimp_box" with "wimp_point"
  1278.